/*
 * replace 用于替换字符串
 * str: 用于替换的字符串
 * src_str: 被替换的字符串
 * src_str: 替换的字符串
 */
#include <stdio.h>
#include <malloc.h>
#include <string.h>
char* replace(char* str, char* src_str, char* dest_str)
{
    char* p_str = str;
    char* p1 = malloc(strlen(p_str) + 1);
    char * new_str = p1;
    memset(new_str, 0, strlen(p_str) + 1);
    /* int cout = 0; */
    while (1) {
        char* p = strstr(p_str, src_str);
        if (p == NULL) {
            break;
        }
        /* printf("cout: %d\n", cout++); */
        strncpy(new_str, p_str, p - p_str);      // 把旧的复制到新的字符串缓存中 长度为p - str
        new_str = new_str + strlen(new_str); // 修改地址
        strcpy(new_str, dest_str);           // 复制新的字符串进来
        /* printf("p1: %s\n", p1); */
        new_str = new_str + strlen(dest_str);
        /* printf("p_str: %s\n", p_str); */
        p_str = p_str + (p - p_str) + strlen(src_str); // 替换为新的指针地址
        /* printf("p_str: %s\n", p_str); */
                                         // .... 直到没有找到为止
    }
    strcpy(new_str, p_str);
    return p1;
}

/*
 * int main(int argc, char *argv[])
 * {
 *     char * tt = "xxxx(aabb)cc";
 *     char *new_p = replace(tt, "(", "\\(");
 *     new_p = replace(new_p, ")", "\\)");
 *     printf("%s\n", new_p);
 *     return 0;
 * }
 */
